home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 23 / Amiga Format AFCD23 (Feb 1998, Issue 107).iso / +look_here_1st!+ / reader_requests / alienbreed3d2 / cheesesauce / hiresgourwall.s < prev    next >
Text File  |  1997-11-28  |  21KB  |  1,579 lines

  1.  
  2. *********************************** 
  3.  
  4. * The screendivide routine is simpler
  5. * using a0=left pixel
  6. * a2= right pixel
  7. * d0= left dist
  8. * d2= right dist
  9. * d4 = left strip
  10. * d5 = right strip
  11.  
  12. * (a0)=leftx
  13. * 2(a0)=rightx
  14.  
  15. * 4(a0)=leftbm
  16. * 6(a0)=rightbm
  17.  
  18. * 8(a0)=leftdist
  19. * 10(a0)=rightdist
  20.  
  21. * 12(a0)=lefttop
  22. * 14(a0)=righttop
  23.  
  24. * 16(a0)=leftbot
  25. * 18(a0)=rightbot
  26.  
  27.  
  28. DoleftendGOUR:
  29.  
  30.  move.w leftclip,d0
  31.  sub.w #1,d0
  32.  move.w d0,leftclipandlast
  33.  
  34.  
  35.  move.w (a0),d0
  36.  move.w 2(a0),d1
  37.  sub.w d0,d1
  38.  bge.s sometodrawG
  39.  rts
  40. sometodrawG:
  41.  move.w itertabG(pc,d1.w*4),d7
  42.  swap d0
  43.  move.w itertabG+2(pc,d1.w*4),d6
  44.  clr.w d0
  45.  swap d1
  46.  clr.w d1
  47.  asr.l d6,d1
  48.  move.l d1,(a0)
  49.  
  50.  bra pstitG
  51.  
  52. itertabG:
  53.  incbin "ab3:includes/iterfile"
  54.  
  55. pstitG:
  56.  
  57.  moveq #0,d1
  58.  move.w 4(a0),d1
  59.  moveq #0,d2
  60.  move.w 6(a0),d2
  61.  sub.w d1,d2
  62.  swap d1
  63.  swap d2
  64.  asr.l d6,d2
  65.  move.l d2,4(a0)
  66.  
  67.  moveq #0,d2
  68.  move.w 8(a0),d2
  69.  moveq #0,d3
  70.  move.w 10(a0),d3
  71.  sub.w d2,d3
  72.  swap d2
  73.  swap d3
  74.  asr.l d6,d3
  75.  move.l d3,8(a0)
  76.  
  77.  moveq #0,d3
  78.  move.w 12(a0),d3
  79.  moveq #0,d4
  80.  move.w 14(a0),d4
  81.  sub.w d3,d4
  82.  swap d3
  83.  swap d4
  84.  asr.l d6,d4
  85.  move.l d4,12(a0)
  86.  
  87.  moveq #0,d4
  88.  move.w 16(a0),d4
  89.  moveq #0,d5
  90.  move.w 18(a0),d5
  91.  sub.w d4,d5
  92.  swap d4
  93.  swap d5
  94.  asr.l d6,d5
  95.  move.l d5,16(a0)
  96.  
  97.  
  98. *** Gouraud shading ***
  99.  moveq #0,d5
  100.  move.w 26(a0),d5
  101.  sub.w 24(a0),d5
  102.  add.w d5,d5
  103.  swap d5
  104.  asr.l d6,d5
  105.  move.l d5,28(a0)
  106.  moveq #0,d5
  107.  move.w 24(a0),d5
  108.  add.w d5,d5
  109.  swap d5
  110.  move.l d5,24(a0)
  111.  
  112. *** Extra Gouraud Shading ***
  113.  
  114.  moveq #0,d5
  115.  move.w 34(a0),d5
  116.  sub.w 32(a0),d5
  117.  add.w d5,d5
  118.  swap d5
  119.  asr.l d6,d5
  120.  move.l d5,36(a0)
  121.  moveq #0,d5
  122.  move.w 32(a0),d5
  123.  add.w d5,d5
  124.  swap d5
  125.  move.l d5,32(a0)
  126.  
  127.  bra screendivideGOUR
  128.  
  129. TOPBRCOUNT: dc.l 0
  130. BOTBRCOUNT: dc.l 0
  131.  
  132. screendivideGOUR:
  133.  
  134.  or.l #$ffff0000,d7
  135.  move.w leftclipandlast(pc),d6
  136.  move.l #WorkSpace,a2
  137.  
  138.  move.l (a0),a3
  139.  move.l 4(a0),a4
  140.  move.l 8(a0),a5
  141.  move.l 12(a0),a6
  142.  move.l 16(a0),a1
  143.  
  144.  
  145. scrdivlopG:
  146.  
  147.  swap d0
  148.  cmp.w d6,d0
  149.  bgt scrnotoffleftG
  150.  swap d0
  151.  add.l a4,d1
  152.  add.l a5,d2
  153.  add.l a6,d3
  154.  add.l a1,d4
  155.  add.l a3,d0
  156.  move.l 28(a0),d5
  157.  add.l d5,24(a0)
  158.  move.l 36(a0),d5
  159.  add.l d5,32(a0)
  160.  
  161.  dbra d7,scrdivlopG
  162.  rts
  163.  
  164. scrnotoffleftG:
  165.  
  166.  move.w d0,d6
  167.  
  168.  cmp.w rightclip(pc),d0
  169.  bge.s outofcalcG
  170.  
  171. scrnotoffrightG:
  172.  
  173.  
  174.  move.w d0,(a2)+
  175.  move.l d1,(a2)+
  176.  move.l d2,(a2)+
  177.  move.l d3,(a2)+
  178.  move.l d4,(a2)+
  179.  move.l 24(a0),(a2)+
  180.  move.l 32(a0),(a2)+
  181.  swap d0
  182.  add.l a3,d0
  183.  add.l a4,d1
  184.  add.l a5,d2
  185.  add.l a6,d3
  186.  add.l a1,d4
  187.  move.l 28(a0),d5
  188.  add.l d5,24(a0)
  189.  move.l 36(a0),d5
  190.  add.l d5,32(a0)
  191.  add.l #$10000,d7
  192.  dbra d7,scrdivlopG
  193.  
  194. outofcalcG:
  195.  swap d7
  196.  tst.w d7
  197.  bge.s .somethingtodraw
  198.  rts
  199. .somethingtodraw:
  200.  
  201.  move.l #consttab,a1
  202.  move.l #WorkSpace,a0
  203.  
  204. ; tst.b seethru
  205. ; bne screendividethru
  206.  
  207.  tst.b FULLSCR
  208.  bne scrdrawlopGB
  209.  
  210.  tst.b DOUBLEWIDTH
  211.  bne scrdrawlopGDOUB
  212.  
  213. scrdrawlopG:
  214.  
  215.  move.w (a0)+,d0
  216.  move.l FASTBUFFER,a3
  217.  lea (a3,d0.w),a3
  218.  move.l (a0)+,d1
  219.  
  220. ; bra pastscrinto
  221. ;
  222. ;pastscrinto 
  223.  
  224.  swap d1
  225.  
  226.  move.w d1,d6
  227.  and.w HORAND,d6
  228.  move.l (a0)+,d2
  229.  swap d2
  230.  add.w fromtile(pc),d6
  231.  add.w d6,d6
  232.  move.w d6,a5
  233.  move.l (a0)+,d3
  234.  swap d3
  235.  add.l #divthreetab,a5
  236.  move.w (a5),StripData
  237.  
  238.  move.l ChunkAddr,a5
  239.  moveq #0,d6
  240.  move.b StripData,d6
  241.  add.w d6,d6
  242.  move.w VALSHIFT,d4
  243.  asl.l d4,d6
  244.  add.l d6,a5
  245.  move.l (a0)+,d4
  246.  swap d4
  247.  addq #1,d4
  248.  move.w d2,d6
  249. ***************************
  250. * old version
  251.  asr.w #7,d6
  252. ***************************
  253. ; asr.w #3,d6
  254. ; sub.w #4,d6
  255. ; cmp.w #6,d6
  256. ; blt.s tstbrbr
  257. ; move.w #6,d6
  258. ;tstbrbr:
  259. ***************************
  260.  move.l (a0)+,d5
  261.  swap d5
  262.  move.w d7,-(a7)
  263.  ext.w d5
  264.  move.w d6,d7
  265.  add.w d5,d7
  266.  bge.s .brnotneg
  267.  moveq #0,d7
  268. .brnotneg
  269.  cmp.w #62,d7
  270.  blt.s .brnotpos
  271.  move.w #62,d7
  272. .brnotpos
  273.  
  274.  move.l (a0)+,d5
  275.  swap d5
  276.  ext.w d5
  277.  add.w d5,d6
  278.  bge.s .brnotneg2
  279.  moveq #0,d6
  280. .brnotneg2
  281.  cmp.w #62,d6
  282.  blt.s .brnotpos2
  283.  move.w #62,d6
  284. .brnotpos2
  285.  
  286.  asr.w #1,d6
  287.  asr.w #1,d7
  288.  sub.w d6,d7
  289.  
  290.  move.l PaletteAddr,a4
  291. ; move.l a2,a4
  292. ; add.w ffscrpickhowbright(pc,d6*2),a2
  293. ; and.b #$fe,d6
  294. ; add.w ffscrpickhowbright(pc,d6*2),a4
  295.  
  296. ; btst #0,d0
  297. ; beq .nobrightswap
  298. ; exg a2,a4
  299. ;.nobrightswap:
  300.  
  301.  bsr ScreenWallstripdrawGOUR
  302.  move.w (a7)+,d7
  303.  
  304. toosmallG:
  305.  
  306.  dbra d7,scrdrawlopG
  307.  
  308.  rts
  309.  
  310. itsoddy:
  311.  add.w #4+4+4+4+4+4,a0
  312.  dbra d7,scrdrawlopGDOUB
  313.  rts
  314.  
  315. scrdrawlopGDOUB:
  316.  
  317.  move.w (a0)+,d0
  318.  btst #0,d0
  319.  bne.s itsoddy
  320.  move.l FASTBUFFER,a3
  321.  lea (a3,d0.w),a3
  322.  move.l (a0)+,d1
  323.  
  324. ; bra pastscrinto
  325. ;
  326. ;pastscrinto 
  327.  
  328.  swap d1
  329.  
  330.  move.w d1,d6
  331.  and.w HORAND,d6
  332.  move.l (a0)+,d2
  333.  swap d2
  334.  add.w fromtile(pc),d6
  335.  add.w d6,d6
  336.  move.w d6,a5
  337.  move.l (a0)+,d3
  338.  swap d3
  339.  add.l #divthreetab,a5
  340.  move.w (a5),StripData
  341.  
  342.  move.l ChunkAddr,a5
  343.  moveq #0,d6
  344.  move.b StripData,d6
  345.  add.w d6,d6
  346.  move.w VALSHIFT,d4
  347.  asl.l d4,d6
  348.  add.l d6,a5
  349.  move.l (a0)+,d4
  350.  swap d4
  351.  addq #1,d4
  352.  move.w d2,d6
  353. ***************************
  354. * old version
  355.  asr.w #7,d6
  356. ***************************
  357. ; asr.w #3,d6
  358. ; sub.w #4,d6
  359. ; cmp.w #6,d6
  360. ; blt.s tstbrbr
  361. ; move.w #6,d6
  362. ;tstbrbr:
  363. ***************************
  364.  move.l (a0)+,d5
  365.  swap d5
  366.  move.w d7,-(a7)
  367.  ext.w d5
  368.  move.w d6,d7
  369.  add.w d5,d7
  370.  bge.s .brnotneg
  371.  moveq #0,d7
  372. .brnotneg
  373.  cmp.w #62,d7
  374.  blt.s .brnotpos
  375.  move.w #62,d7
  376. .brnotpos
  377.  
  378.  move.l (a0)+,d5
  379.  swap d5
  380.  ext.w d5
  381.  add.w d5,d6
  382.  bge.s .brnotneg2
  383.  moveq #0,d6
  384. .brnotneg2
  385.  cmp.w #62,d6
  386.  blt.s .brnotpos2
  387.  move.w #62,d6
  388. .brnotpos2
  389.  
  390.  asr.w #1,d6
  391.  asr.w #1,d7
  392.  sub.w d6,d7
  393.  
  394.  move.l PaletteAddr,a4
  395. ; move.l a2,a4
  396. ; add.w ffscrpickhowbright(pc,d6*2),a2
  397. ; and.b #$fe,d6
  398. ; add.w ffscrpickhowbright(pc,d6*2),a4
  399.  
  400. ; btst #0,d0
  401. ; beq .nobrightswap
  402. ; exg a2,a4
  403. ;.nobrightswap:
  404.  
  405.  bsr ScreenWallstripdrawGOUR
  406.  move.w (a7)+,d7
  407.  
  408.  dbra d7,scrdrawlopGDOUB
  409.  
  410.  rts
  411.  
  412.  
  413. scrdrawlopGB:
  414.  
  415.  move.w (a0)+,d0
  416.  move.l FASTBUFFER,a3
  417.  lea (a3,d0.w),a3
  418.  move.l (a0)+,d1
  419.  
  420. ; bra pastscrinto
  421. ;
  422. ;pastscrinto 
  423.  
  424.  swap d1
  425.  
  426.  move.w d1,d6
  427.  and.w HORAND,d6
  428.  move.l (a0)+,d2
  429.  swap d2
  430.  add.w fromtile(pc),d6
  431.  add.w d6,d6
  432.  move.w d6,a5
  433.  move.l (a0)+,d3
  434.  swap d3
  435.  add.l #divthreetab,a5
  436.  move.w (a5),StripData
  437.  
  438.  move.l ChunkAddr,a5
  439.  moveq #0,d6
  440.  move.b StripData,d6
  441.  add.w d6,d6
  442.  move.w VALSHIFT,d4
  443.  asl.l d4,d6
  444.  add.l d6,a5
  445.  move.l (a0)+,d4
  446.  swap d4
  447.  addq #1,d4
  448.  move.w d2,d6
  449. ***************************
  450. * old version
  451.  asr.w #7,d6
  452. ***************************
  453. ; asr.w #3,d6
  454. ; sub.w #4,d6
  455. ; cmp.w #6,d6
  456. ; blt.s tstbrbr
  457. ; move.w #6,d6
  458. ;tstbrbr:
  459. ***************************
  460.  move.l (a0)+,d5
  461.  swap d5
  462.  move.w d7,-(a7)
  463.  ext.w d5
  464.  move.w d6,d7
  465.  add.w d5,d7
  466.  bge.s .brnotneg
  467.  moveq #0,d7
  468. .brnotneg
  469.  cmp.w #62,d7
  470.  blt.s .brnotpos
  471.  move.w #62,d7
  472. .brnotpos
  473.  
  474.  move.l (a0)+,d5
  475.  swap d5
  476.  ext.w d5
  477.  add.w d5,d6
  478.  bge.s .brnotneg2
  479.  moveq #0,d6
  480. .brnotneg2
  481.  cmp.w #62,d6
  482.  blt.s .brnotpos2
  483.  move.w #62,d6
  484. .brnotpos2
  485.  
  486.  asr.w #1,d6
  487.  asr.w #1,d7
  488.  sub.w d6,d7
  489.  
  490.  move.l PaletteAddr,a4
  491. ; move.l a2,a4
  492. ; add.w ffscrpickhowbright(pc,d6*2),a2
  493. ; and.b #$fe,d6
  494. ; add.w ffscrpickhowbright(pc,d6*2),a4
  495.  
  496. ; btst #0,d0
  497. ; beq .nobrightswap
  498. ; exg a2,a4
  499. ;.nobrightswap:
  500.  
  501.  bsr ScreenWallstripdrawGOURB
  502.  move.w (a7)+,d7
  503.  
  504.  dbra d7,scrdrawlopGB
  505.  
  506.  rts
  507.  
  508. itsbilloddy:
  509.  add.w #4+4+4+4+4+4,a0
  510.  dbra d7,scrdrawlopGDOUB
  511.  rts
  512.  
  513. scrdrawlopGBDOUB:
  514.  
  515.  move.w (a0)+,d0
  516.  btst #0,d0
  517.  bne.s itsbilloddy
  518.  move.l FASTBUFFER,a3
  519.  lea (a3,d0.w),a3
  520.  move.l (a0)+,d1
  521.  
  522. ; bra pastscrinto
  523. ;
  524. ;pastscrinto 
  525.  
  526.  swap d1
  527.  
  528.  move.w d1,d6
  529.  and.w HORAND,d6
  530.  move.l (a0)+,d2
  531.  swap d2
  532.  add.w fromtile(pc),d6
  533.  add.w d6,d6
  534.  move.w d6,a5
  535.  move.l (a0)+,d3
  536.  swap d3
  537.  add.l #divthreetab,a5
  538.  move.w (a5),StripData
  539.  
  540.  move.l ChunkAddr,a5
  541.  moveq #0,d6
  542.  move.b StripData,d6
  543.  add.w d6,d6
  544.  move.w VALSHIFT,d4
  545.  asl.l d4,d6
  546.  add.l d6,a5
  547.  move.l (a0)+,d4
  548.  swap d4
  549.  addq #1,d4
  550.  move.w d2,d6
  551. ***************************
  552. * old version
  553.  asr.w #7,d6
  554. ***************************
  555. ; asr.w #3,d6
  556. ; sub.w #4,d6
  557. ; cmp.w #6,d6
  558. ; blt.s tstbrbr
  559. ; move.w #6,d6
  560. ;tstbrbr:
  561. ***************************
  562.  move.l (a0)+,d5
  563.  swap d5
  564.  move.w d7,-(a7)
  565.  ext.w d5
  566.  move.w d6,d7
  567.  add.w d5,d7
  568.  bge.s .brnotneg
  569.  moveq #0,d7
  570. .brnotneg
  571.  cmp.w #62,d7
  572.  blt.s .brnotpos
  573.  move.w #62,d7
  574. .brnotpos
  575.  
  576.  move.l (a0)+,d5
  577.  swap d5
  578.  ext.w d5
  579.  add.w d5,d6
  580.  bge.s .brnotneg2
  581.  moveq #0,d6
  582. .brnotneg2
  583.  cmp.w #62,d6
  584.  blt.s .brnotpos2
  585.  move.w #62,d6
  586. .brnotpos2
  587.  
  588.  asr.w #1,d6
  589.  asr.w #1,d7
  590.  sub.w d6,d7
  591.  
  592.  move.l PaletteAddr,a4
  593. ; move.l a2,a4
  594. ; add.w ffscrpickhowbright(pc,d6*2),a2
  595. ; and.b #$fe,d6
  596. ; add.w ffscrpickhowbright(pc,d6*2),a4
  597.  
  598. ; btst #0,d0
  599. ; beq .nobrightswap
  600. ; exg a2,a4
  601. ;.nobrightswap:
  602.  
  603.  bsr ScreenWallstripdrawGOURB
  604.  move.w (a7)+,d7
  605.  
  606.  dbra d7,scrdrawlopGBDOUB
  607.  
  608.  rts
  609.  
  610. walldrawGOUR:
  611.  
  612.  tst.w d1
  613.  bgt.s oneinfront1G
  614.  tst.w d3
  615.  bgt.s oneinfrontG
  616.  rts
  617.  
  618. oneinfront1G
  619.  tst.w d3
  620.  ble.s oneinfrontG
  621. ; Bothinfront!
  622.  
  623.  nop
  624.  
  625. oneinfrontG
  626.  
  627.  move.w #64,d7
  628.  move.w #4,d6
  629.  
  630.  move.w d3,d0
  631.  sub.w d1,d0
  632.  bge.s notnegzdiffG
  633.  neg.w d0
  634. notnegzdiffG
  635. ; cmp.w #1024,d0
  636. ; blt.s nd01G
  637. ; add.w d7,d7
  638. ; add.w #1,d6
  639. ;nd01G:
  640.  cmp.w #512,d0
  641.  blt.s nd0G 
  642.  add.w d7,d7
  643.  add.w #1,d6
  644.  bra nhaG
  645. nd0G:
  646.  
  647.  cmp.w #256,d0
  648.  bgt.s nh1G
  649.  asr.w #1,d7
  650.  subq #1,d6
  651. nh1G:
  652.  cmp.w #128,d0
  653.  bgt.s nh2G
  654.  asr.w #1,d7
  655.  subq #1,d6
  656. nh2G:
  657.  
  658. nhaG:
  659.  
  660.  move.w d3,d0
  661.  cmp.w d1,d3
  662.  blt.s rightnearestG
  663.  move.w d1,d0
  664. rightnearestG:
  665.  cmp.w #64,d0
  666.  bgt.s nd1G
  667.  addq #1,d6
  668.  add.w d7,d7
  669. nd1G:
  670.  
  671.  cmp.w #128,d0
  672.  blt.s nh3G
  673.  asr.w #1,d7
  674.  subq #1,d6
  675.  blt.s nh3G
  676.  cmp.w #256,d0
  677.  blt.s nh3G
  678.  asr.w #1,d7
  679.  subq #1,d6
  680. nh3G:
  681.  move.w d6,iters
  682.  subq #1,d7
  683.  move.w d7,multcount
  684.  
  685.  move.l #databuffer,a3
  686.  move.l a0,d0
  687.  move.l a2,d2
  688.  
  689.  move.l d0,(a3)+
  690.  add.l d2,d0
  691.  move.w d1,(a3)+
  692.  move.w leftwallTOPbright,d7
  693.  move.w d7,(a3)+
  694.  asr.l #1,d0
  695.  move.w d4,(a3)+
  696.  
  697.  move.w leftwallbright,d6
  698.  move.w d6,(a3)+
  699.  
  700.  add.w d5,d4
  701.  move.l d0,(a3)+
  702.  add.w d3,d1
  703.  asr.w #1,d1
  704.  move.w d1,(a3)+
  705.  
  706.  add.w rightwallTOPbright,d7
  707.  asr.w #1,d7
  708.  move.w d7,(a3)+
  709.  
  710.  asr.w #1,d4
  711.  move.w d4,(a3)+
  712.  
  713.  add.w rightwallbright,d6
  714.  asr.w #1,d6
  715.  move.w d6,(a3)+
  716.  
  717.  
  718.  move.l d2,(a3)+
  719.  move.w d3,(a3)+
  720.  move.w rightwallTOPbright,(a3)+
  721.  move.w d5,(a3)+
  722.  move.w rightwallbright,(a3)+
  723.  
  724.  ; We now have the two endpoints and the midpoint
  725.  ; so we need to perform 1 iteration of the inner
  726.  ; loop, the first time.
  727.  
  728. * Decide how often to subdivide by how far away the wall is, and
  729. * how perp. it is to the player.
  730.  
  731.  move.l #databuffer,a0
  732.  move.l #databuffer2,a1
  733.  
  734.  swap d7
  735.  move.w iters,d7
  736.  blt noitersG
  737.  move.l #1,a2
  738.  
  739. iterloopG:
  740.  move.l a0,a3
  741.  move.l a1,a4
  742.  swap d7
  743.  move.w a2,d7
  744.  exg a0,a1
  745.  
  746.  move.l (a3)+,d0
  747.  move.l (a3)+,d1
  748.  move.l (a3)+,d2
  749. middleloopG:
  750.  move.l d0,(a4)+
  751.  move.l (a3)+,d3
  752.  add.l d3,d0
  753.  move.l d1,(a4)+
  754.  asr.l #1,d0
  755.  move.l (a3)+,d4
  756.  add.l d4,d1
  757.  move.l d2,(a4)+
  758.  asr.l #1,d1
  759.  and.w #$7fff,d1
  760.  move.l (a3)+,d5
  761.  add.l d5,d2
  762.  move.l d0,(a4)+
  763.  asr.l #1,d2
  764.  move.l d1,(a4)+
  765.  move.l d2,(a4)+
  766.  
  767.  move.l d3,(a4)+
  768.  move.l (a3)+,d0
  769.  add.l d0,d3
  770.  
  771.  move.l d4,(a4)+
  772.  asr.l #1,d3
  773.  move.l (a3)+,d1
  774.  add.l d1,d4
  775.  move.l d5,(a4)+
  776.  asr.l #1,d4
  777.  and.w #$7fff,d4
  778.  move.l (a3)+,d2
  779.  add.l d2,d5
  780.  move.l d3,(a4)+
  781.  asr.l #1,d5
  782.  move.l d4,(a4)+
  783.  move.l d5,(a4)+
  784.  
  785.  subq #1,d7
  786.  bgt.s middleloopG
  787.  move.l d0,(a4)+
  788.  move.l d1,(a4)+
  789.  move.l d2,(a4)+
  790.  
  791.  add.w a2,a2
  792.  
  793.  swap d7
  794.  dbra d7,iterloopG
  795.  
  796. noitersG:
  797.  
  798. CalcAndDrawG:
  799.  
  800. ; CACHE_ON d2
  801.  
  802.  move.l a0,a1
  803.  move.w multcount,d7
  804. .findfirstinfront:
  805.  move.l (a1)+,d1
  806.  move.w (a1)+,d0
  807.  bgt.s .foundinfront
  808.  move.l (a1)+,d4
  809.  move.w (a1)+,d4
  810.  dbra d7,.findfirstinfront
  811.  rts    ; no two points were in front
  812.  
  813. .foundinfront:
  814.  move.w (a1)+,tlbr
  815.  move.w (a1)+,d4
  816.  move.w (a1)+,lbr
  817.  ; d1=left x, d4=left end, d0=left dist 
  818.  
  819.  divs d0,d1
  820.  add.w MIDDLEX,d1
  821.  
  822.  move.l topofwall(pc),d5
  823.  divs d0,d5
  824.  add.w MIDDLEY,d5
  825.  move.w d5,strtop
  826.  move.l botofwall(pc),d5
  827.  divs d0,d5
  828.  add.w MIDDLEY,d5
  829.  move.w d5,strbot
  830.  
  831. .computeloop:
  832.  move.w 4(a1),d2
  833.  bgt.s .infront
  834.  rts
  835.  
  836. .infront:
  837.  move.l #store,a0
  838.  move.l (a1),d3
  839.  divs d2,d3
  840.  move.w 8(a1),d5
  841.  add.w MIDDLEX,d3
  842.  move.w strtop(pc),12(a0)
  843.  move.l topofwall(pc),d6
  844.  divs d2,d6
  845.  move.w strbot(pc),16(a0)
  846.  add.w MIDDLEY,d6
  847.  move.w d6,strtop
  848.  move.w d6,14(a0)
  849.  move.l botofwall(pc),d6
  850.  divs d2,d6
  851.  add.w MIDDLEY,d6
  852.  move.w d6,strbot
  853.  move.w d6,18(a0)
  854.  move.w d3,2(a1)
  855.  cmp.w leftclip(pc),d3
  856.  blt .alloffleft
  857.  cmp.w rightclip(pc),d1
  858. ; cmp.w #95,d1
  859.  bge .alloffright
  860.  
  861.  movem.l d0/d1/d2/d3/a0,-(a7)
  862.  
  863.  moveq #0,d0
  864.  move.b WALLIDENT,d0
  865.  blt.s .noputinmap
  866.  
  867.  move.b d0,d3
  868.  and.b #15,d0
  869.  move.l COMPACTPTR,a0
  870.  moveq #0,d1
  871.  move.w d0,d2
  872.  add.w d0,d0
  873.  add.w d2,d0
  874.  bset d0,d1
  875.  btst #4,d3
  876.  beq.s .nodoor
  877.  addq #2,d0
  878.  bset d0,d1
  879. .nodoor:
  880.  
  881.  or.l d1,(a0)
  882.  move.l BIGPTR,a0
  883.  
  884.  move.w wallleftpt,(a0,d2.w*4) 
  885.  move.w wallrightpt,2(a0,d2.w*4) 
  886.  
  887. .noputinmap
  888.  
  889.  movem.l (a7)+,d0/d1/d2/d3/a0
  890.  
  891.  bra OTHERHALFG
  892.  
  893.  
  894. .alloffleft:
  895.  
  896.  move.l (a1)+,d1
  897.  move.w (a1)+,d0
  898.  move.w (a1)+,tlbr
  899.  move.w (a1)+,d4
  900.  move.w (a1)+,lbr
  901.  
  902.  dbra d7,.computeloop
  903.  rts
  904.  
  905. .alloffright:
  906.  rts
  907.  
  908. computeloop2G:
  909.  move.w 4(a1),d2
  910.  bgt.s .infront
  911.  rts
  912.  
  913. .infront:
  914.  move.l #store,a0
  915.  move.l (a1),d3
  916.  divs d2,d3
  917.  move.w 8(a1),d5
  918.  add.w MIDDLEX,d3
  919.  move.w strtop(pc),12(a0)
  920.  move.l topofwall(pc),d6
  921.  divs d2,d6
  922.  move.w strbot(pc),16(a0)
  923.  add.w MIDDLEY,d6
  924.  move.w d6,strtop
  925.  move.w d6,14(a0)
  926.  move.l botofwall(pc),d6
  927.  divs d2,d6
  928.  add.w MIDDLEY,d6
  929.  move.w d6,strbot
  930.  move.w d6,18(a0)
  931.  move.w d3,2(a1)
  932.  cmp.w leftclip(pc),d3
  933.  blt.s alloffleft2G
  934.  cmp.w rightclip(pc),d1
  935. ; cmp.w #95,d1
  936.  bge.s alloffright2G
  937.  
  938. OTHERHALFG:
  939.  
  940.  move.w d1,(a0)
  941.  move.w d3,2(a0)
  942.  move.w d4,4(a0)
  943.  move.w d5,6(a0)
  944.  move.w d0,8(a0)
  945.  move.w d2,10(a0)
  946.  
  947.  move.w lbr,d5
  948.  sub.w #300,d5
  949.  ext.w d5
  950.  move.w d5,24(a0)
  951.  move.w 10(a1),d5
  952.  sub.w #300,d5
  953.  ext.w d5
  954.  move.w d5,26(a0)
  955.  
  956.  move.w tlbr,d5
  957.  sub.w #300,d5
  958.  ext.w d5
  959.  move.w d5,32(a0)
  960.  move.w 6(a1),d5
  961.  sub.w #300,d5
  962.  ext.w d5
  963.  move.w d5,34(a0)
  964.  
  965.  movem.l d7/a1,-(a7)
  966.  move.w #maxscrdiv,d7
  967.  bsr DoleftendGOUR
  968.  movem.l (a7)+,d7/a1
  969.  
  970. alloffleft2G:
  971.  
  972.  move.l (a1)+,d1
  973.  move.w (a1)+,d0
  974.  move.w (a1)+,tlbr
  975.  move.w (a1)+,d4
  976.  move.w (a1)+,lbr
  977.  
  978.  dbra d7,computeloop2G
  979.  
  980.  rts
  981.  
  982. alloffright2G:
  983.  rts
  984.  
  985.  
  986. ***********************************
  987.  
  988. * Need a routine which takes...?
  989. * Top Y (3d)
  990. * Bottom Y (3d)
  991. * distance
  992. * height of each tile (number and routine addr)
  993. * And produces the appropriate strip on the
  994. * screen.
  995.  
  996.  
  997. nostripqG:
  998.  rts
  999.  
  1000. STARTGOUR: dc.l 0
  1001.  
  1002. ScreenWallstripdrawGOUR:
  1003.  
  1004.  swap d6
  1005.  clr.w d6
  1006.  move.l d6,STARTGOUR
  1007.  
  1008.  swap d7
  1009.  clr.w d7
  1010.  
  1011.  move.w d4,d6
  1012.  sub.w d3,d6
  1013.  beq.s nostripqG
  1014.  ext.l d6
  1015.  
  1016.  divs.l d6,d7    ; speed through gouraud table.
  1017.  
  1018.  move.w d4,d6
  1019.  cmp.w topclip(pc),d6
  1020.  blt.s nostripqG
  1021.  cmp.w botclip(pc),d3
  1022.  bgt.s nostripqG
  1023.  
  1024.  cmp.w botclip(pc),d6
  1025.  ble.s noclipbotG
  1026.  move.w botclip(pc),d6
  1027. noclipbotG:
  1028.  
  1029.  move.w d3,d5
  1030.  cmp.w topclip(pc),d5
  1031.  bge.s nocliptopG
  1032.  
  1033.  sub.w topclip(pc),d5
  1034.  neg.w d5
  1035.  ext.l d5
  1036.  move.l d7,d0
  1037.  muls.l d5,d0
  1038.  add.l d0,STARTGOUR
  1039.  
  1040.  move.w topclip(pc),d5
  1041.  
  1042.  
  1043. ; bra gotoendG
  1044. nocliptopG:
  1045.  
  1046.  bra gotoendG
  1047.  
  1048.  CNOP 0,128 
  1049. drawwallPACK0G:
  1050.  swap d4
  1051.  and.w d7,d4
  1052.  move.l d3,d2
  1053.  swap d2
  1054.  move.b 1(a5,d4.w*2),d1
  1055.  and.w #%1111111111100000,d2
  1056.  swap d4
  1057.  and.b #31,d1
  1058.  add.w d1,d2
  1059.  move.b (a4,d2.w*2),(a3)
  1060.  adda.w d0,a3
  1061.  add.l d5,d3
  1062.  add.l a2,d4
  1063.  dbra d6,drawwallPACK0G
  1064.  
  1065. nostripG:
  1066.  rts
  1067.  
  1068.  
  1069.  CNOP 0,4 
  1070. drawwallPACK1G:
  1071.  swap d4
  1072.  and.w d7,d4
  1073.  move.l d3,d2
  1074.  swap d2
  1075.  move.w (a5,d4.w*2),d1
  1076.  and.w #%1111111111100000,d2
  1077.  swap d4
  1078.  lsr.w #5,d1
  1079.  and.w #31,d1
  1080.  add.b d1,d2
  1081.  move.b (a4,d2.w*2),(a3)
  1082.  adda.w d0,a3
  1083.  add.l d5,d3
  1084.  add.l a2,d4
  1085.  dbra d6,drawwallPACK1G
  1086.  
  1087.  rts
  1088.  
  1089.  
  1090.  CNOP 0,4 
  1091. drawwallPACK2G:
  1092.  swap d4
  1093.  and.w d7,d4
  1094.  move.l d3,d2
  1095.  swap d2
  1096.  move.b (a5,d4.w*2),d1
  1097.  and.w #%1111111111100000,d2
  1098.  swap d4
  1099.  lsr.b #2,d1
  1100.  and.w #31,d1
  1101.  add.b d1,d2
  1102.  move.b (a4,d2.w*2),(a3)
  1103.  adda.w d0,a3
  1104.  add.l d5,d3
  1105.  add.l a2,d4
  1106.  dbra d6,drawwallPACK2G
  1107.  rts
  1108.  
  1109.  
  1110. usesimpleG:
  1111.  mulu d3,d4
  1112.  
  1113.  add.l d0,d4
  1114.  swap d4
  1115.  add.w totalyoff(pc),d4
  1116.  
  1117. cliptopusesimpleG
  1118.  move.w VALAND,d7
  1119.  move.w #320,d0
  1120.  moveq #0,d1
  1121.  
  1122.  swap d2
  1123.  
  1124.  ifne CHEESEY
  1125.  asr.l #1,d2
  1126.  endc
  1127.  move.l d2,a2
  1128.  swap d4
  1129.  ifne CHEESEY
  1130.  asr.l #1,d4
  1131.  endc
  1132.  
  1133.  move.l GOURSPEED,d5
  1134.  asl.l #5,d5
  1135.  move.l STARTGOUR,d3
  1136.  asl.l #5,d3
  1137.  
  1138.  cmp.b #1,StripData+1
  1139.  dbge d6,simplewalliPACK0G
  1140.  dbne d6,simplewalliPACK1G
  1141.  dble d6,simplewalliPACK2G
  1142.  rts
  1143.  
  1144.  CNOP 0,4
  1145. simplewalliPACK0G:
  1146.  swap d4
  1147.  and.w d7,d4
  1148.  move.l d3,d2
  1149.  swap d2
  1150.  move.b 1(a5,d4.w*2),d1
  1151.  and.w #%1111111111100000,d2
  1152.  swap d4
  1153.  and.b #31,d1
  1154.  add.b d1,d2
  1155.  move.b (a2,d2.w*2),d3
  1156. simplewallPACK0G:
  1157.  move.b d3,(a3)
  1158.  adda.w d0,a3
  1159.  add.l a2,d4
  1160.  bcc.s .noread
  1161.  addq #1,d4
  1162.  and.w d7,d4
  1163.  move.b 1(a5,d4.w*2),d1
  1164.  and.b #31,d1
  1165.  move.b (a2,d1.w*2),d3
  1166. .noread:
  1167.  dbra d6,simplewallPACK0G
  1168.  rts
  1169.  
  1170.  CNOP 0,4
  1171. simplewalliPACK1G:
  1172.  swap d4
  1173.  and.w d7,d4
  1174.  move.l d3,d2
  1175.  swap d2
  1176.  move.w (a5,d4.w*2),d1
  1177.  lsr.w #5,d1
  1178.  and.w #31,d1
  1179.  move.b (a2,d1.w*2),d3
  1180. simplewallPACK1G:
  1181.  move.b d3,(a3)
  1182.  adda.w d0,a3
  1183.  add.l d5,d4
  1184.  bcc.s .noread
  1185.  addq #1,d4
  1186.  and.w d7,d4
  1187.  move.w (a5,d4.w*2),d1
  1188.  lsr.w #5,d1
  1189.  and.w #31,d1
  1190.  move.b (a2,d1.w*2),d3
  1191. .noread:
  1192.  dbra d6,simplewallPACK1G
  1193.  rts
  1194.  
  1195.  CNOP 0,4
  1196. simplewalliPACK2G:
  1197.  move.b (a5,d4.w*2),d1
  1198.  lsr.b #2,d1
  1199.  and.b #31,d1
  1200.  move.b (a2,d1.w*2),d3
  1201. simplewallPACK2G:
  1202.  move.b d3,(a3)
  1203.  adda.w d0,a3
  1204.  add.l d5,d4
  1205.  bcc.s .noread
  1206.  addq #1,d4
  1207.  and.w d7,d4
  1208.  move.b (a5,d4.w*2),d1
  1209.  lsr.b #2,d1
  1210.  move.b (a2,d1.w*2),d3
  1211. .noread:
  1212.  dbra d6,simplewallPACK2G
  1213.  rts
  1214.  
  1215. ;gotoendnomult:
  1216. ; movem.l d0/d1/d2/d3/d4/d7,-(a7)
  1217. ; add.l timeslarge(pc,d5.w*4),a3 
  1218. ; move.w d5,d4
  1219. ; move.l 4(a1,d2.w*8),d0
  1220. ; move.l (a1,d2.w*8),d2
  1221. ; moveq #0,d3
  1222. ; move.w d2,d3
  1223. ; swap d2
  1224. ; tst.w d2
  1225. ; move.w wallyoff(pc),d4
  1226. ; add.w #44,d4
  1227. ; bne.s .notsimple
  1228. ; cmp.l #$b000,d3
  1229. ; ble cliptopusesimple
  1230. ;.notsimple:
  1231. ; bra cliptop
  1232.  
  1233. GOURSPEED: dc.l 0
  1234.  
  1235. gotoendG:
  1236.  tst.b DOUBLEHEIGHT
  1237.  bne doubwallGOUR
  1238.  
  1239.  sub.w d5,d6    ; height to draw.
  1240.  ble nostripqG
  1241.  
  1242.  move.l d7,GOURSPEED
  1243.  
  1244.  add.l timeslargeG(pc,d5.w*4),a3 
  1245.  
  1246.  add.w d2,d2
  1247.  
  1248.  move.l 4(a1,d2.w*8),d0
  1249.  add.w TOPOFFSET(pc),d5
  1250.  move.w d5,d4
  1251.  
  1252.  move.l (a1,d2.w*4),d2
  1253.  moveq #0,d3
  1254. ; move.w d2,d3
  1255. ; swap d2
  1256. ; tst.w d2
  1257. ; bne.s .notsimple
  1258. ; cmp.l #$b000,d3
  1259. ; ble usesimple
  1260. ;.notsimple:
  1261.  
  1262.  ext.l d5
  1263.  move.l d2,d4
  1264.  muls.l d5,d4
  1265.  
  1266. ; mulu d3,d4
  1267. ; muls d2,d5
  1268.  add.l d0,d4
  1269.  ifne CHEESEY
  1270.  asr.l #1,d4
  1271.  endc
  1272.  swap d4
  1273. ; add.w d5,d4
  1274.  add.w totalyoff(pc),d4
  1275. cliptopG
  1276.  move.w VALAND,d7
  1277.  and.w d7,d4
  1278.  move.w #320,d0
  1279.  moveq #0,d1
  1280.  
  1281.  ifne CHEESEY
  1282.  asr.l #1,d2
  1283.  endc
  1284.  move.l d2,a2
  1285.  swap d4
  1286.  
  1287.  move.l GOURSPEED,d5
  1288.  asl.l #5,d5
  1289.  move.l STARTGOUR,d3
  1290.  asl.l #5,d3
  1291.  
  1292.  cmp.b #1,StripData+1
  1293.  dbge d6,drawwallPACK0G
  1294.  dbne d6,drawwallPACK1G
  1295.  dble d6,drawwallPACK2G
  1296.  rts
  1297.  
  1298. timeslargeG:
  1299. val SET 0
  1300.  REPT 256
  1301.  dc.l val
  1302. val SET val+320
  1303.  ENDR
  1304.  
  1305. doubwallGOUR:
  1306.  
  1307.  moveq #0,d0
  1308.  asr.w #1,d5
  1309.  addx.w d0,d5
  1310.  add.w d5,d5
  1311.  
  1312.  sub.w d5,d6    ; height to draw.
  1313.  asr.w #1,d6
  1314.  ble nostripqG
  1315.  
  1316.  move.l d7,GOURSPEED
  1317.  
  1318.  add.l timeslargeGDOUB(pc,d5.w*4),a3 
  1319.  
  1320.  add.w d2,d2
  1321.  
  1322.  move.l 4(a1,d2.w*8),d0
  1323.  add.w TOPOFFSET(pc),d5
  1324.  move.w d5,d4
  1325.  
  1326.  move.l (a1,d2.w*4),d2
  1327.  moveq #0,d3
  1328. ; move.w d2,d3
  1329. ; swap d2
  1330. ; tst.w d2
  1331. ; bne.s .notsimple
  1332. ; cmp.l #$b000,d3
  1333. ; ble usesimple
  1334. ;.notsimple:
  1335.  
  1336.  ext.l d5
  1337.  move.l d2,d4
  1338.  muls.l d5,d4
  1339.  
  1340. ; mulu d3,d4
  1341. ; muls d2,d5
  1342.  add.l d0,d4
  1343.  ifne CHEESEY
  1344.  asr.l #1,d4
  1345.  endc
  1346.  swap d4
  1347. ; add.w d5,d4
  1348.  add.w totalyoff(pc),d4
  1349.  move.w VALAND,d7
  1350.  and.w d7,d4
  1351.  move.w #640,d0
  1352.  moveq #0,d1
  1353.  
  1354.  ifeq CHEESEY
  1355.  add.l d2,d2
  1356.  endc
  1357.  move.l d2,a2
  1358.  swap d4
  1359.  
  1360.  move.l GOURSPEED,d5
  1361.  asl.l #6,d5
  1362.  move.l STARTGOUR,d3
  1363.  asl.l #5,d3
  1364.  
  1365.  cmp.b #1,StripData+1
  1366.  dbge d6,drawwallPACK0G
  1367.  dbne d6,drawwallPACK1G
  1368.  dble d6,drawwallPACK2G
  1369.  rts
  1370.  
  1371. timeslargeGDOUB:
  1372. val SET 0
  1373.  REPT 256
  1374.  dc.l val
  1375. val SET val+320
  1376.  ENDR
  1377.  
  1378.  
  1379.  
  1380. ScreenWallstripdrawGOURB:
  1381.  
  1382.  swap d6
  1383.  clr.w d6
  1384.  move.l d6,STARTGOUR
  1385.  
  1386.  swap d7
  1387.  clr.w d7
  1388.  
  1389.  move.w d4,d6
  1390.  sub.w d3,d6
  1391.  beq nostripqG
  1392.  ext.l d6
  1393.  
  1394.  divs.l d6,d7    ; speed through gouraud table.
  1395.  
  1396.  move.w d4,d6
  1397.  cmp.w topclip(pc),d6
  1398.  blt nostripqG
  1399.  cmp.w botclip(pc),d3
  1400.  bgt nostripqG
  1401.  
  1402.  cmp.w botclip(pc),d6
  1403.  ble.s noclipbotGb
  1404.  move.w botclip(pc),d6
  1405. noclipbotGb:
  1406.  
  1407.  move.w d3,d5
  1408.  cmp.w topclip(pc),d5
  1409.  bge.s nocliptopGB
  1410.  
  1411.  sub.w topclip(pc),d5
  1412.  neg.w d5
  1413.  ext.l d5
  1414.  move.l d7,d0
  1415.  muls.l d5,d0
  1416.  add.l d0,STARTGOUR
  1417.  
  1418.  move.w topclip(pc),d5
  1419.  
  1420. nocliptopGB:
  1421.  
  1422.  
  1423.  
  1424. gotoendGB:
  1425.  
  1426.  tst.b DOUBLEHEIGHT
  1427.  bne doubwallGOURBIG
  1428.  
  1429.  sub.w d5,d6    ; height to draw.
  1430.  ble nostripqG
  1431.  move.l d7,GOURSPEED
  1432.  
  1433.  add.l timeslargeGB(pc,d5.w*4),a3 
  1434.  
  1435.  move.w d2,d4
  1436.  add.w d2,d2
  1437.  add.w d2,d4
  1438.  
  1439.  move.l 4(a1,d4.w*8),d0
  1440.  add.w TOPOFFSET(pc),d5
  1441.  move.w d5,d4
  1442.  
  1443.  move.l (a1,d2.w*4),d2
  1444.  moveq #0,d3
  1445. ; move.w d2,d3
  1446. ; swap d2
  1447. ; tst.w d2
  1448. ; bne.s .notsimple
  1449. ; cmp.l #$b000,d3
  1450. ; ble usesimple
  1451. ;.notsimple:
  1452.  
  1453.  ext.l d5
  1454.  move.l d2,d4
  1455.  muls.l d5,d4
  1456.  
  1457. ; mulu d3,d4
  1458. ; muls d2,d5
  1459.  add.l d0,d4
  1460.  ifne CHEESEY
  1461.  asr.l #1,d4
  1462.  endc
  1463.  swap d4
  1464. ; add.w d5,d4
  1465.  add.w totalyoff(pc),d4
  1466.  move.w VALAND,d7
  1467.  and.w d7,d4
  1468.  move.w #320,d0
  1469.  moveq #0,d1
  1470.  
  1471.  ifne CHEESEY
  1472.  asr.l #1,d2
  1473.  endc
  1474.  
  1475.  move.l d2,a2
  1476.  swap d4
  1477.  
  1478.  
  1479.  move.l GOURSPEED,d5
  1480.  asl.l #5,d5
  1481.  move.l STARTGOUR,d3
  1482.  asl.l #5,d3
  1483.  
  1484.  cmp.b #1,StripData+1
  1485.  dbge d6,drawwallPACK0G
  1486.  dbne d6,drawwallPACK1G
  1487.  dble d6,drawwallPACK2G
  1488.  rts
  1489.  
  1490. timeslargeGB:
  1491. val SET 0
  1492.  REPT 256
  1493.  dc.l val
  1494. val SET val+320
  1495.  ENDR
  1496.  
  1497.  
  1498. doubwallGOURBIG:
  1499.  
  1500.  moveq #0,d0
  1501.  asr.w #1,d5
  1502.  addx.w d0,d5
  1503.  add.w d5,d5
  1504.  
  1505.  sub.w d5,d6    ; height to draw.
  1506.  asr.w #1,d6
  1507.  ble nostripqG
  1508.  move.l d7,GOURSPEED
  1509.  
  1510.  add.l timeslargeGBDOUB(pc,d5.w*4),a3 
  1511.  
  1512.  move.w d2,d4
  1513.  add.w d2,d2
  1514.  add.w d2,d4
  1515.  
  1516.  move.l 4(a1,d4.w*8),d0
  1517.  add.w TOPOFFSET(pc),d5
  1518.  move.w d5,d4
  1519.  
  1520.  move.l (a1,d2.w*4),d2
  1521.  moveq #0,d3
  1522. ; move.w d2,d3
  1523. ; swap d2
  1524. ; tst.w d2
  1525. ; bne.s .notsimple
  1526. ; cmp.l #$b000,d3
  1527. ; ble usesimple
  1528. ;.notsimple:
  1529.  
  1530.  ext.l d5
  1531.  move.l d2,d4
  1532.  muls.l d5,d4
  1533.  
  1534. ; mulu d3,d4
  1535. ; muls d2,d5
  1536.  add.l d0,d4
  1537.  ifne CHEESEY
  1538.  asr.l #1,d4
  1539.  endc
  1540.  swap d4
  1541. ; add.w d5,d4
  1542.  add.w totalyoff(pc),d4
  1543.  move.w VALAND,d7
  1544.  
  1545.  and.w d7,d4
  1546.  move.w #640,d0
  1547.  moveq #0,d1
  1548.  
  1549.  ifeq CHEESEY
  1550.  add.l d2,d2
  1551.  endc
  1552.  move.l d2,a2
  1553.  swap d4
  1554.  
  1555.  
  1556.  move.l GOURSPEED,d5
  1557.  asl.l #6,d5
  1558.  move.l STARTGOUR,d3
  1559.  asl.l #5,d3
  1560.  
  1561.  cmp.b #1,StripData+1
  1562.  dbge d6,drawwallPACK0G
  1563.  dbne d6,drawwallPACK1G
  1564.  dble d6,drawwallPACK2G
  1565.  rts
  1566.  
  1567. timeslargeGBDOUB:
  1568. val SET 0
  1569.  REPT 256
  1570.  dc.l val
  1571. val SET val+320
  1572.  ENDR
  1573.